function clone(target) {
    // 类型判断 {} [] null
    if (typeof target === 'object' && target !== null) {
        if(Array.isArray(target)) {
            return [...target]
        } else {
            return {...target}
        }
    } else {
        return target
    }
}

function clone2(target) {
    // 类型判断 {} [] null
    if (typeof target === 'object' && target !== null) {
        // 创建一个容器
        const result = Array.isArray(target) ? [] : {};
        // 遍历target
        for(let key in target) {
            // 判断当前对象是否包含该属性
            if(target.hasOwnProperty(key)) {
                // 将属性设置到result中
                result[key] = target[key]
            }
        }

        return result;
    } else {
        return target
    }
}